// 先兼容1.0版web请求.2.0 统一采用Tsrv来处理web请求

import lexicon from '@/lib/lexicon/index';
import store from '@/store';

const axios = require('axios');
const qs = require('qs');

const getDBName = () => store.getters.DBName;
/**
 *@deprecated :弃用
 */
const getPartData = (params: any, cancel?: any): any => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });

  return axios.post(lexicon.url.getPartData, postData, {
    cancelToken: cancel
  });
};

const getTreeGrid = (params: any, cancel?: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.getTreeGrid, postData, {
    cancelToken: cancel
  });
};

const getNav = () => {
  const postData: any = qs.stringify({
    dbName: getDBName()
  });
  return axios.post(lexicon.url.getNav, postData);
};

const getFilterList = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.getFilterList, postData);
};

const bpa = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.bpa, postData);
};

const advq = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
    // pagination: JSON.stringify(pagination)
  });
  return axios.post(lexicon.url.advq, postData);
};

const ctd = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.ctd, postData);
};

const defv = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    // funName,
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.defv, postData);
};

const vce = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.vce, postData);
};

// const readXLSX = (fileName: string) => {
//   const postData: any = qs.stringify({
//     dbName: getDBName(),
//     fileName
//   });
//   return axios.post(lexicon.url.readXLSX, postData);
// };

const exportXLSX = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    // tableName,
    // funName,
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.exportXLSX, postData);
};
// const uploadFile = (files: File[], params: any[], progressList: Function[]) => {
//   const promiseList = [];
//   files.forEach((el, idx) => {
//     const config = {
//       headers: {
//         'Content-Type': 'multipart/form-data'
//       },
//       onUploadProgress: progressList[idx]
//     };
//     const form = new FormData();
//     form.append('upload', el);
//     form.append('params', JSON.stringify(params[idx]));
//     // form.append('userNo', getUserNo());
//     // form.append('token', getToken());
//     promiseList.push(axios.post(lexicon.url.uploadFile, form, config));
//   });
//   return Promise.all(promiseList);
// };

// const loadFile = (params: any) => {
//   const postData: any = qs.stringify({
//     dbName: getDBName(),
//     params: JSON.stringify(params)
//   });
//   return axios.post(lexicon.url.loadFile, postData);
// };

const delFile = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.delFile, postData);
};
const getAutoNum = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.gan, postData);
};

// const saveFlowData=(params: any) => {
//   const postData: any = qs.stringify({
//     //userNo: getUserNo(),
//     //token: getToken(),
//     params: JSON.stringify(params)
//   });
//   return axios.post(lexicon.url.sfd, postData);
// };

const auditFlowData = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.afd, postData);
};

const unAuditFlowData = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.uafd, postData);
};

const sendForAudit = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.sfa, postData);
};

const getAuditMap = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.gam, postData);
};

const getAuditList = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.gal, postData);
};

const appProApi = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.apa, postData);
};

const paramsConvertApi = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.pca, postData);
};

// 权限
const postRpf = () => {
  const postData: any = qs.stringify({
    // token: getToken()
  });
  return axios.post(lexicon.url.rfp, postData);
};

// 批量字段
const setPmsRolesFields = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.sprf, postData);
};

// 获取可控字段
const getPmsFields = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.gpf, postData);
};

// 上传可控字段
const setPmsFields = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.spf, postData);
};

const delectPmsRoles = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.dpr, postData);
};

const postPmsFun = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.ppf, postData);
};

const pmsCheck = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.pmsCheck, postData);
};

const getUserPms = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.aftnl, postData);
};

const setUserPms = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.sup, postData);
};

const gpmp = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.gpmp, postData);
};

const sdq = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.sdq, postData);
};

const get = (getName: string, params: any, cancel?: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    getName,
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.get, postData, {
    cancelToken: cancel
  });
};

const fun = (funName: string, params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    funName,
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.fun, postData);
};

// const query = (params: any) => {
//   const postData: any = qs.stringify({
//     dbName: getDBName(),
//     params: JSON.stringify(params)
//   });
//   return axios.post(lexicon.url.query, postData);
// };

const logout = () => {
  return axios.post(lexicon.url.logout, null);
};

const sysGet = (getName: string, params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    getName,
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.get, postData);
};

const sysFun = (funName: string, params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    funName,
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.fun, postData);
};

const setFunConf = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.setFunConf, postData);
};

const setI18n = (params: any) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify(params)
  });
  return axios.post(lexicon.url.setI18n, postData);
};

const resetPWD = (oldPWD: string, newPWD: string) => {
  const postData: any = qs.stringify({
    dbName: getDBName(),
    params: JSON.stringify({ oldPWD, newPWD })
  });
  return axios.post(lexicon.url.resetPWD, postData);
};

const chkToken = (params: any) => {
  const postData: any = qs.stringify({
    token: params
  });
  return axios.post(lexicon.url.chkToken, postData);
};

const getConfig = () => {
  return axios.get(lexicon.url.getConfFilePath);
};

const chkKey = (key: any) => {
  return axios.get(lexicon.url.chkKey, key);
};

export default {
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  getPartData,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  getTreeGrid,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  getFilterList,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  bpa,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  advq,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  ctd,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  defv,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  vce,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  // readXLSX,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  exportXLSX,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  // uploadFile,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  // loadFile,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  delFile,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  getAutoNum,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  // saveFlowData,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  auditFlowData,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  unAuditFlowData,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  sendForAudit,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  getAuditMap,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  getAuditList,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  appProApi,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  paramsConvertApi,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  gpmp,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  sdq,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  get,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  fun,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  getNav,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  logout,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  sysGet,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  sysFun,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  setFunConf,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  setI18n,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  resetPWD,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  chkToken,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  getConfig,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  chkKey,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  postRpf,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  setPmsRolesFields,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  getPmsFields,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  setPmsFields,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  delectPmsRoles,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  postPmsFun,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  pmsCheck,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  getUserPms,
  /**
   *@deprecated :将在2.0版本后续版本中弃用
   */
  setUserPms
};
